Deploy na nuvem
Documentação de Deploy na AWS Usando Terraform
1. Pré-requisitos
Antes de iniciar o deploy, você deve garantir que os seguintes requisitos estejam atendidos:
- Conta AWS: Acesso válido a uma conta AWS.
- IAM User: Um usuário IAM com permissões para gerenciar recursos (EC2, S3, RDS, etc.).
- Terraform: Instalado e configurado localmente. Guia de instalação
- AWS CLI: Configurado e autenticado com suas credenciais. Guia de configuração
Instalar Terraform e AWS CLI
- Instale o Terraform seguindo as instruções: Terraform CLI Installation.
- Instale e configure a AWS CLI: AWS CLI Installation.
Configuração da AWS CLI
aws configure
Informe:
- AWS Access Key ID
- AWS Secret Access Key
- Default region name (ex: us-east-1)
- Default output format (ex: json)
2. Arquitetura de Deploy
- 5 EC2 Instances (tipo t2.micro)
- 2 RDS Instances (MySQL)
- 1 Bucket S3
3. Arquivos Terraform
3.1. Estrutura do Diretório
infrastructure
├──terraform
├── ec2.tf
├── main.tf
├── rds.tf
├── s3.tf
├── sg.tf
└── terraform.tfstate
3.4. Arquivo main.tf
Neste arquivo, configuramos todos as variáveis de versionamento.
3.4.1. EC2 Instances
Aqui criamos 5 instâncias EC2 com o tipo t2.micro
.
resource "aws_instance" "app" {
count = var.ec2_count
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
instance_type = var.instance_type
tags = {
Name = "AppInstance-${count.index + 1}"
}
}
3.4.2. RDS Instances
Aqui criamos 2 bancos de dados RDS Postgres.
resource "aws_db_instance" "db" {
count = 2
allocated_storage = 20
engine = "postgres"
instance_class = "db.t2.micro"
name = var.db_name
username = var.db_username
password = var.db_password
parameter_group_name = "default.mysql8.0"
skip_final_snapshot = true
publicly_accessible = false
tags = {
Name = "RDSInstance-${count.index + 1}"
}
}
3.4.3. S3 Bucket
Aqui criamos um bucket S3 para armazenar dados.
resource "aws_s3_bucket" "bucket_main" {
bucket = "bucket_greench"
}
4. Deploy com Terraform
4.1. Inicializar o Terraform
Este comando irá baixar os provedores e preparar o ambiente:
terraform init
4.2. Visualizar o plano
Você pode visualizar o que será criado antes de aplicar:
terraform plan
4.3. Aplicar o plano
Para iniciar o deploy da infraestrutura na AWS:
terraform apply
Digite "yes" quando solicitado para confirmar a criação dos recursos.
5. Monitoramento e Acesso
5.1. Verificar as instâncias EC2
Após o deploy, você pode verificar as instâncias EC2 pela AWS Management Console ou diretamente pelas saídas do Terraform, que mostram os IPs públicos.
Para conectar-se via SSH a uma das instâncias EC2, use o seguinte comando (substitua <public_ip>
pelo IP retornado pelo output):
ssh -i /path/to/your-key.pem ec2-user@<public_ip>
5.2. Acessar o RDS
Você pode acessar o banco de dados RDS com as credenciais definidas no arquivo do RDS. O endpoint RDS será exibido nas saídas do Terraform.
6. Encerramento
6.1. Destruir a infraestrutura
Para remover toda a infraestrutura criada, execute o comando abaixo. Isso removerá todas as instâncias EC2, RDS e o bucket S3:
terraform destroy
Digite "yes" para confirmar a destruição.
7. Considerações Finais
Este guia fornece uma base sólida para o deploy de nossa infraestrutura AWS usando Terraform. Dependendo das necessidades específicas do projeto, essa estrutura pode ser expandida para incluir mais serviços, como Elastic Load Balancing (ELB), Auto Scaling, VPCs, entre outros.